/*
 * Casilla.h
 *
 *  Created on: 01/04/2013
 *      Author: Juliansci
 */

#ifndef CASILLA_H_
#define CASILLA_H_
#include <list>
//#include "Entidad.h"
#include "Personaje.h"
#include "bonus/Bonus.h"

using namespace std;

class Personaje;
class Casilla {
public:
	Casilla(int x, int y);

	virtual ~Casilla();
	int getAlto() const;
	void setAlto(int);
	int getAncho() const;
	void setAncho(int);
	list<Entidad*>& getEntidades();
	void setEntidades(list<Entidad*>);
	list<Personaje*>& getPersonajes();
	void agregarEntidad(Entidad*);
	void setPersonajes(list<Personaje*>);
	void agregarPersonaje(Personaje*);
	int getX() const;
	void setX(int);
	int getY() const;
	void setY(int);
	bool esTransitable();
	bool fueVisitada();
	void setearTransitabilidad(bool esTransitable);
	void setVisitada(bool acasoFueVisitada);
	void removerPersonaje(Personaje* personaje);
	void agregarBonus(Bonus* bonus);
	list<Bonus*> getBonus();
	list<Bonus*> &obtenerBonus();
	bool tieneBonusMapa();
	void setBonusMapa(bool bonusMapa);
	Entidad* obtenerGolpeable();
	void setEntidadesAtacadas(bool fueAtacada);
	void removerBonus(Bonus* bonus);
	void removerEntidad(Entidad *entidad);

private:
	int x, y, ancho, alto;
	list<Entidad*> entidades;
	list<Personaje*> personajes;
	list<Bonus*> bonus;
	bool sePuedeTransitar;
	bool visitada;
	bool bonusMapa;
};

#endif /* CASILLA_H_ */
